/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package coladas;

import java.util.ArrayList;

/**
 *
 * @author u201100467
 */
public class Operario {

    ArrayList<Pedido> pedidos;

    public Operario() {
        pedidos = new ArrayList<Pedido>();
    }

    public void RegistrarPedido(String numPedido, String codProve, String nomProve) {
        if (BuscarPedido(numPedido) != null) {
            throw new RuntimeException("CODIGO YA REGISTRADO");
        }

        pedidos.add(new Pedido(numPedido, codProve, nomProve));

    }

    public Pedido BuscarPedido(String numPedido) {
        Pedido p = null;
        for (Pedido pedido : pedidos) {
            if (pedido.getNroPedido().equals(numPedido)) {
                p = pedido;
            }
        }
        return p;
    }

    public Certificado BuscarCertificado(String certificado,String numPed) {
        for (Pedido pedido : pedidos)
        {
            if(pedido.getNroPedido().equals(numPed))
            {
             for (int i=0; i < pedido.getCertificados().size();i++)
             {
                 Certificado objC = pedido.getCertificados().get(i);

                 if(objC.getCodCerti().equals(certificado)){
                     return objC;
                 }


            }

            }

        }
   return null;
    }

    public ArrayList<Pedido> getPedidos() {
        return pedidos;
    }

    public void RegistrarCertificado(String numPedido, String codCer) {
        //Buscamos el numero de pedido para revisar que exista
        boolean existe = false;
        Pedido Objpedido = null;
        for (Pedido pedido : pedidos) {
            if (pedido.getNroPedido().equals(numPedido)) {
                existe = true;
                Objpedido = pedido;
                break;
            }
        }

        if (existe && Objpedido != null) {
            //luego grabamos los datos.
            String item = String.valueOf(Objpedido.getCertificados().size() + 1);
            Objpedido.getCertificados().add(new Certificado(numPedido, item, codCer, "C:\\Img\\" + codCer.toString() + ".jpg"));

        } else {
            throw new RuntimeException("El numero de pedido no existe.");
        }
    }

    public void EliminarPedido(String numPedido) {
        for (Pedido pedido : pedidos) {
            if (pedido.getNroPedido().equals(numPedido)) {
                pedidos.remove(pedido);
                break;
            }
        }
    }

    public void eliminarCertificado(String numPedido, String codCer) {

        for (Pedido pedido : pedidos) {
            if (pedido.getNroPedido().equals(numPedido)) {
                for (Certificado certi : pedido.getCertificados()) {
                    if (certi.getCodCerti().equals(codCer)) {
                        pedido.getCertificados().remove(certi);
                        break;
                    }
                }
                break;
            }
        }
    }

    public void RegistrarColada(String numPedido, String codCer, String numColada) {
        for (Pedido pedido : pedidos) {
            if (pedido.getNroPedido().equals(numPedido)) {
                for (Certificado certi : pedido.getCertificados()) {
                    if (certi.getCodCerti().equals(codCer)) {
                        String item = String.valueOf(certi.getColadas().size() + 1);
                        certi.getColadas().add(new Colada(numPedido, codCer, item, numColada));
                        break;
                    }
                }
                break;
            }
        }
    }

    public void EliminarColada(String numPedido, String codCer, String numColada) {
        for (Pedido pedido : pedidos) {
            if (pedido.getNroPedido().equals(numPedido)) {
                for (Certificado certi : pedido.getCertificados()) {
                    if (certi.getCodCerti().equals(codCer)) {
                        for (Colada colada : certi.getColadas()) {
                            if (colada.getCodColada().equals(numColada)) {
                                pedido.getCertificados().get(0).getColadas().remove(colada);
                                break;
                            }
                        }
                    }
                }
            }
        }
    }

    public ArrayList<Colada> BuscarColadaxPedido(String numPedido) {
        ArrayList<Colada> coladas = new ArrayList<Colada>();

        for (Pedido pedido : pedidos) {
            if (pedido.getNroPedido().equals(numPedido)) {
                for (Certificado certi : pedido.getCertificados()) {
                    for (Colada colada : certi.getColadas()) {
                        coladas.add(colada);
                    }
                }
            }
        }
        return coladas;
    }

    public ArrayList<Colada> BuscarColadaxNumeroColada(String numColada) {
        ArrayList<Colada> coladas = new ArrayList<Colada>();

        for (Pedido pedido : pedidos) {
            for (Certificado certi : pedido.getCertificados()) {
                for (Colada colada : certi.getColadas()) {
                    if (colada.getCodColada().equals(numColada)) {
                        coladas.add(colada);
                    }
                }
            }
        }
        return coladas;
    }

    public ArrayList<Colada> BuscarColadax_numPed_numCerti(String numPedido, String numCerti) {
        ArrayList<Colada> coladas = new ArrayList<Colada>();

        for (Pedido pedido : pedidos) {
            if (pedido.getNroPedido().equals(numPedido)) {
                for (Certificado certi : pedido.getCertificados()) {
                    if (certi.getCodCerti().equals(numCerti)) {
                        for (Colada colada : certi.getColadas()) {
                            coladas.add(colada);
                        }
                    }
                }
            }
        }
        return coladas;
    }

    public ArrayList<ClsVista1> BuscarCertificado_x_NumPedido(String numPedido) {
        ArrayList<ClsVista1> t = new ArrayList<ClsVista1>();
        String mypedido = null;
        String myprove = null;
        String mycolada = null;
        String myruta = null;

        for (Pedido pedido : pedidos) {
            if (pedido.getNroPedido().equals(numPedido)) {
                for (Certificado certi : pedido.getCertificados()) {
                    for (Colada colada : certi.getColadas()) {
                        mypedido = pedido.getNroPedido();
                        myprove = pedido.getNomProveedor();
                        mycolada = colada.getCodColada();
                        myruta = certi.getRutCerti();
                        t.add(new ClsVista1(mypedido, myprove, mycolada, myruta));
                    }
                }
            }
        }
        return t;
    }

    public ArrayList<ClsVista1> BuscarCertificado_x_NumColada(String numColada) {
        ArrayList<ClsVista1> t = new ArrayList<ClsVista1>();
        String mypedido = null;
        String mycerti = null;
        String mycolada = null;
        String myruta = null;

        for (Pedido pedido : pedidos) {
            for (Certificado certi : pedido.getCertificados()) {
                for (Colada colada : certi.getColadas()) {
                    if (colada.getCodColada().equals(numColada)) {
                        mypedido = pedido.getNroPedido();
                        mycerti = certi.getCodCerti();
                        mycolada = colada.getCodColada();
                        myruta = certi.getRutCerti();
                        t.add(new ClsVista1(mypedido, mycerti, mycolada, myruta));
                    }
                }
            }
        }
        return t;
    }

    public Certificado BuscarCertificado_xNumero(String numCertidicado) {
        Certificado c = null;

        for (Pedido pedido : pedidos) {
            for (Certificado certi : pedido.getCertificados()) {
                if (certi.getCodCerti().equals(numCertidicado)) {
                    c = certi;
                    break;
                }
            }
        }
        return c;
    }
}
